
/**
 * @ProjectName: 
 * @Copyright: 2016 lisheng All Right Reserved.
 * toughheart@163.com
 * 2016年9月19日 下午9:40:44
 * @Description: 本内容未经本人允许禁止使用、转发.
 */
 
package com.ls.fw.data.hbase.service;

import java.io.IOException;
import java.util.List;
import java.util.Map;

import org.apache.hadoop.hbase.MasterNotRunningException;
import org.apache.hadoop.hbase.ZooKeeperConnectionException;
import org.apache.hadoop.hbase.client.Get;

import com.ls.fw.data.hbase.bean.HbaseStatus;
import com.ls.fw.data.hbase.bean.Record;
import com.ls.fw.data.hbase.helper.HbaseHelper.ColumnHandler;
import com.ls.fw.data.hbase.helper.HbaseHelper.ConvertHandler;
import com.ls.fw.data.hbase.support.HBaseTable.RowHandler;

/**
 * 
 * @author lisheng
 * 2016年9月19日 下午9:40:44
 * @version V1.0 
 */
public interface HBaseService {

	public static final String FAMILY = "f";
	/**
	 * 查询数据
	 * @param table
	 * @param ids
	 * @return
	 * @throws Exception 
	 */
	List<Map<String, Object>> select(String table, String rowkeyName, ColumnHandler columnHandler, String... ids) throws Exception;

	/**
	 * 查询数据
	 * @param table
	 * @param ids
	 * @return
	 * @throws Exception 
	 */
	List<Map<String, Object>> select(String table, ColumnHandler columnHandler, List<String> ids, String rowkeyName) throws Exception;

	/**
	 * 保存数据
	 * @param table
	 * @param map
	 * @return 
	 * @throws Exception 
	 */
	List<String> add(String table, List<Record> map, ConvertHandler handler) throws Exception;

	/**
	 * 保存数据
	 * @param table
	 * @param map
	 * @throws Exception 
	 */
	String add(String table, Record map, ConvertHandler handler) throws Exception;

	/**
	 * 
	 * 删除数据
	 * @param table
	 * @param ids
	 */
	void delete(String table, String... ids);
	
	/**
	 * 删除表
	 * @param table
	 */
	void drop(String table);

	/**
	 * 关闭连接
	 */
	void close();

	/**
	 * 清空表
	 * @param table
	 */
	void empty(String table);

	void create(String table);
	boolean exists(String table,String id);

	void scan(String table, String start, String end, RowHandler rowHandler);

	String update(String table, Record record, ConvertHandler handler) throws Exception;

	
	/**
	 * 
	 * @author lisheng
	 * 2016年10月26日 下午9:23:03
	 * @version V1.0
	 * @return
	 * @throws IOException 
	 */
	List<HbaseStatus> getRegionServerStatus() throws IOException;

	
	/**
	 * 
	 * @author lisheng
	 * 2016年10月26日 下午9:23:07
	 * @version V1.0
	 * @return
	 * @throws IOException 
	 * @throws ZooKeeperConnectionException 
	 * @throws MasterNotRunningException 
	 */
	List<HbaseStatus> getMasterStatus() throws MasterNotRunningException, ZooKeeperConnectionException, IOException;

	String getMaxRowKey(String table) throws IOException, Exception;
	String getMinRowKey(String table) throws IOException, Exception;
}
